[C] POSIX Threads

Publicado por Enzo de Brito Ferber 26/01/2009

[ Hits: 6.887 ]

Homepage: http://www.maximasonorizacao.com.br

Download pthread2.c




O foco deste programa é fazer com que o processo filho criado por fork() não seja terminado quando o processo pai termina, e para isso, usei threads. Para terminar o programa, digite no terminal:

kill <child_pid>

O child_pid é mostrado ao usuário quando o programa é executado. Bem legal :)

  



Esconder código-fonte

// pthread2.c

/*
 * Enzo Ferber : <enzo@veloxmail.com.br>
 *
 * POSIX Threads Test 2
 * @ Exit parent and go on with child.
 *
 * $ gcc -lpthread -o pthread2 pthread2.c
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>    // getpid
#include <pthread.h>   // POSIX Threads
#include <sys/types.h>    // getpid

// child in infinite loop
void *childfunction ( void *ptr )
{
   pthread_t self = pthread_self ();
   pthread_detach ( self );

   for ( ; ; )
   {
      printf ( "[*] Here I am again ... \n");
      sleep (2);
   }
}

// main function
int main ( int argc, char *argv[] )
{
   pthread_t child;
   int cret; // child pthread_create () return 

   // child
   if ( !fork() )
   {
      printf ( "[*] Child proccess begining ... \n" );
      cret = pthread_create ( &child, NULL, childfunction, NULL );

      printf ( "[*] Child PID: %d\n", getpid () );

      pthread_join ( child, NULL );
   }
   // parent
   else
   {
      printf ( "[*] Parent PID: %d\n", getpid () );
      printf ( "[*] Aborting parent ...\n" );

      exit (0);
   }

   // end main
   return 0;
}
// EoF


Scripts recomendados

Função strncat

Ponteiro para Ponteiro para Ponteiro

Leds da porta paralela com interface

Programa recursivo para obter raiz quadrada

C/C++


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts